﻿using System;
using System.Threading.Tasks;
using YXChatApiService.Application.AccountServices.Dtos;
using YXChatApiService.ServiceCollectionExtension;

namespace YXChatApiService.Application.AccountServices
{
    public interface IAccountAppService: ITransientDependency
    {
        /// <summary>
        /// 创建或修改账户信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<AccountDto> CreateOrUpdate(AccountEditDto input);
        /// <summary>
        /// 根据账号获取账户信息
        /// </summary>
        /// <param name="accountNumber"></param>
        /// <returns></returns>
        AccountDto GetAccount(string accountNumber);
        /// <summary>
        /// 根据id获取账户信息
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        AccountDto Get(Guid id);
        /// <summary>
        /// 根据账号，密码获取账户信息
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<AccountDto> GetAccount(LoginInput input);
        /// <summary>
        /// 修改头像
        /// </summary>
        /// <param name="accountNumber"></param>
        /// <param name="imgUrl"></param>
        /// <returns></returns>
        Task UpdateAccountAvatar(string accountNumber, string imgUrl);
        /// <summary>
        /// 获取用户密码
        /// </summary>
        /// <param name="accountNumber"></param>
        /// <returns></returns>
        Task<string> GetAccountPassWord(Guid id);
    }
}